﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.Mvc;

namespace Aprendete.Models
{
    public class UsuarioAdmin
    {

        UsuarioRepository ur = new UsuarioRepository();

        /// <summary>
        /// Metodo para registrar un usuario en el sistema. Retorna un boolean indicando si es posible crear a ese usuario.
        /// </summary>C:\Users\Slavko\Desktop\Aprendete\Aprendete\Models\UsuarioAdmin.cs
        public bool RegistrarUsuario( Usuario usuario)
        {

            bool registrado = false;

            if (usuario.IsValid && ur.Unico(usuario))
            {
               

                registrado = true;
            }

            try
            {
                if (registrado)
                {
                    ur.Add(usuario);
                    ur.Save();
                    string[] nu = { usuario.UserName };
                    Roles.AddUsersToRole(nu, "Usuario");
                    return true;
                }
                else
                    return false;
            }
            catch (Exception e)
            {
                return false;
            }
           
        }

        /// <summary>
        /// Metodo verificador de credenciales de login. Retorna el Usuario correspondiente en caso de que las credenciales coincidan y retorna null en caso contrario.
        /// </summary>
        /// <returns></returns>
        public Usuario Login(string usuario, string pass)
        {
            if(ur.ExisteUsuario(usuario))
            {
                if(ur.GetUsuarioxUserName(usuario).Password.Trim().Equals(pass))
                {
                    return ur.GetUsuarioxUserName(usuario);
                }
                else
                {
                    return null;
                }
            }
            else
            {
                    return null;
            }
            
        }

        /// <summary>
        /// Metodo que edita a un Usuario, recibiendo el Usuario a editar y un Usuario con los datos que se desaean modificar en el Usuario Original. Retorna un boolean indicando si es podible realizar estos cambios.
        /// </summary>
        /// <returns></returns>
        public bool EditarUsario(Usuario original, Usuario cambios)
        {
            return true;
        }

        /// <summary>
        /// Metodo que retorna todos los mensaje del Usuario usuario.
        /// </summary>
        /// <param name="Usuar"></param>
        /// <returns></returns>
        public List<Mensaje> VerMensajes(Usuario usuario)
        {
            List<Mensaje> mensajes = new List<Mensaje>();

            for (int i = 0; i < usuario.Mensajes.Count(); i++)
            {
                mensajes.Add(usuario.Mensajes[i]);
            }

            return mensajes;
        }

        /// <summary>
        /// Metodo que recibe 2 Usuarios: Un evaluador y un evaluado y un comentario (ampliable). Retorna un boolean de si se registró el comentario.
        /// </summary>
        /// <param name="evaluador"></param>
        /// <param name="evaluado"></param>
        /// <param name="Fecha"></param>
        /// <returns></returns>
        public bool ComentarUsuario(Usuario evaluador, Usuario evaluado, DateTime Fecha) 
        {
            return false;
        }

        public void SerProfesor(bool ser, Usuario user)
        {
            user.EsProfesor = ser;
            ur.Save();
        }

    }
}